package com.copa.l1781;

/**
 * @author copa
 * @createDate 2022-12-12 15:52
 * @function 双重遍历法
 */
public class Test1 {

    public int beautySum(String s) {
        if (s.length() < 2) {
            // 小于2的字符串肯定为0
            return 0;
        }
        // 返回结果
        int result = 0;
        // 定义起点
        for (int i = 0; i < s.length(); i++) {
            // 字母统计表，每次起点改变都要重置
            int[] record = new int[26];
            // 每次起点改变都要设置最大值
            int max = 0;
            // 定义终点
            for (int j = i; j < s.length(); j++) {
                // 每次终点改变都要设置最小值，否则统计的时候就不对
                int min = Integer.MAX_VALUE;
                // 每扫到一个字符就加1
                record[s.charAt(j) - 'a']++;
                max = Math.max(max, record[s.charAt(j) - 'a']);
                for (int k = 0; k < record.length; k++) {
                    if (record[k] > 0) {
                        // 这里为了减少操作就判断>0
                        min = Math.min(min, record[k]);
                    }
                }
                // 结果统计累加
                result += min == Integer.MAX_VALUE ? 0 : max - min;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        String s = "aabcb";
        System.out.println(new Test1().beautySum(s));
    }
}
